package com.dtx.builder;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * HTMLBuilder类也是Builder类的子类,它的功能是使用HTML编写文档,其返回结果是HTML文件的名字。
 */
public class HTMLBuilder extends Builder{

    //文件名
    private String fileName;

    //用于编写文件的PrintWriter
    private PrintWriter writer;

    //title为HTML文本的标题
    @Override
    public void makeTitle(String title){

        //将标题作为文件名
        fileName = title + ".html";

        try {
            //生成PrintWriter
            writer = new PrintWriter(new FileWriter("graphdesign"+ File.separator+"builder"+File.separator+fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        writer.println("<html><head><title>" + title + "</title></head><body>");

        //输出标题
        writer.println("<h1>" + title + "</h1>");
    }

    // str为HTML文本的字符串
    @Override
    public void makeString(String str){

        //用<p>标签输出
        writer.println("<p>" + str +"</p>");

    }

    //items为HTML文本的条目
    @Override
    public void makeItems(String[] items){

        //用<ul>和<li>输出
        writer.println("<ul>");

        for (int i = 0; i < items.length; i++) {
            writer.println("<li>" + items[i] + "</li>");
        }

        writer.println("</ul>");

    }

    //完成文档
    @Override
    public void close(){

        //关闭标签
        writer.println("</body></html>");

        //关闭文件
        writer.close();

    }

    //编写完成的文档
    public String getResult(){

        //返回文件名
        return fileName;
    }
}
